package homework.day02;

import java.util.Scanner;

/**
 * 正则表达式练习:
 * 1:编写匹配数字的正则表达式,数字至少一位以上.
 * 2:匹配字符串,要求输入3-15位,内容只能是数字,字母,下划线
 * 完成下面编程题:
 * 程序启动后,要求用户输入用户名,用户名出现内容要求上述正则表达式2的要求.不匹配则直接
 * 提示用户名有误.
 * 如果无误,则要求用户继续输入年龄,规则为上述正则表达式1的要求,不匹配则提示年龄有误
 * 以上两个输入获取是都要求以字符串形式接受(Scanner的nextLine方法获取)
 * 最后验证年龄在1-100岁之间(包含1和100)
 * 提示:这里可以不用正则表达式验证范围,是否转换为数字判定更方便?
 * @author XingHaiYang
 * @date 2022/9/6 21:03
 */
public class Test01 {
	public static void main(String[] args) {
		/**
		 * 编写匹配数字的正则表达式,数字至少一位以上.
		 */
		Scanner scanner = new Scanner(System.in);//键盘扫描器
		System.out.println("输入数字进行匹配：");
		String num = scanner.nextLine();//接收数据
		String regex = "[0-9]+";//定义正则
		if(num.matches(regex)){//判断接收的数据是否匹配正则
			System.out.println("输入正确");
		}else{
			System.out.println("输入错误");
		}
		/**
		 * 匹配字符串,要求输入3-15位,内容只能是数字,字母,下划线
		 */
		String regex2 = "[\\w]{3,15}";//定义正则
		System.out.println("输入数据进行匹配：");
		String data = scanner.nextLine();//获取用户数据
		if(data.matches(regex2)){//判断接收的数据是否匹配正则
			System.out.println("输入正确");
		}else{
			System.out.println("输入错误");
		}
		/**
		 * 完成下面编程题:
		 * 程序启动后,要求用户输入用户名,用户名出现内容要求上述正则表达式2的要求.不匹配则直接
		 * 提示用户名有误.
		 * 如果无误,则要求用户继续输入年龄,规则为上述正则表达式1的要求,不匹配则提示年龄有误
		 * 以上两个输入获取是都要求以字符串形式接受(Scanner的nextLine方法获取)
		 * 最后验证年龄在1-100岁之间(包含1和100)
		 * 提示:这里可以不用正则表达式验证范围,是否转换为数字判定更方便?
		 */
		System.out.println("请输入用户名：");
		String username = scanner.nextLine();
		if(username.matches(regex2)){
			System.out.println("请输入年龄：");
			String age = scanner.nextLine();
			if(age.matches(regex)){
				int age2 = Integer.parseInt(age);
				if(age2>=1 && age2<=100){
					System.out.println("年龄合法");
				}else{
					System.out.println("年龄不合法");
				}
			}else{
				System.out.println("年龄有误");
			}
		}else{
			System.out.println("用户名有误");
		}
	}
}





